/*
 * Agent.h
 *
 *  Created on: Jan 18, 2009
 *      Author: Andrzej Olchawa
 *      mailto: andrzejolchawa@gmail.com
 *      http://www.hardtechnology.org
 *      This is a part of the Armazd project, which is covered by
 *      GNU GPL v2 license.
 */

#ifndef AGENT_H_
#define AGENT_H_

/* Include section */
#include "SensorsLoader.h"
#include "ListenersLoader.h"
#include "AgentConfiguration.h"
#include "Sensor.h"
#include <iostream>
#include <list>

/* namespace declaration */
using namespace std;

/* Agent class definition */
class Agent
{

private:

	/* Variables related with sensors */
	list<Sensor*>  *listOfSensors;
	SensorsLoader  *sensorsLoader;

	list<Listener*>  *listOfListeners;
	ListenersLoader  *listenersLoader;

	/* Function related with sensors and data transmission */
	void createListOfSensors();
	void createListOfListeners();

	/* Other functions */
	void initAgent();

public:

	/* Constructors and destructor */
	Agent();
	virtual ~Agent();

	/* Getters and setters */
	list<Sensor*> *getListOfSensors();
	list<Listener*> *getListOfListeners();

};

#endif /* AGENT_H_ */
